bitkeeper revision 1.1159.258.150 (428e6fdeb6W1XbDj2YkcF53xkdUozA)
authorkraxel@bytesex.org[kaf24] <kraxel@bytesex.org[kaf24]>
Fri, 20 May 2005 23:16:46 +0000 (23:16 +0000)
committerkraxel@bytesex.org[kaf24] <kraxel@bytesex.org[kaf24]>
Fri, 20 May 2005 23:16:46 +0000 (23:16 +0000)
[PATCH] Re: PAE

> We're taking quite a chunk out of lowmem, though....

Uhm, well, no, we don't.  We should though, fix is below.

Current code in unstable takes the address space away from the
vmalloc area, not the lowmem area.  vmalloc space is 128 MB by
default, so the non-PAE hypervisor hole fits in and it works
nevertheless.  The larger PAE mode hypervisor hole doesn't fit
in, so it breaks when you use enougth memory (somewhere around
800-900 MB).  I think that is the bug Scott Parish trapped into.

  Gerd

BitKeeper/etc/logging_ok
linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c
linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/page.h

index e119b60bfa138fd5a55b6c1b9bf9dfef083b7129..59eac58efc88c0497e61a5ad89099c625bcac836 100644 (file)
@@ -40,6 +40,7 @@ kaf24@scramble.cl.cam.ac.uk
 kaf24@striker.cl.cam.ac.uk
 kaf24@viper.(none)
 katzj@redhat.com
+kraxel@bytesex.org
 laudney@eclipse.(none)
 lists-xen@pimb.org
 lynx@idefix.cl.cam.ac.uk
index 698aa2b482cda610316065f75c4b2a241a705f8a..6c4387ac3a3acff798ef0e3fa29e1ff5b1b3d971 100644 (file)
@@ -654,7 +654,10 @@ void __init mem_init(void)
 #else
        high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
 #endif
-
+       printk("vmalloc area: %lx-%lx, maxmem %lx\n",
+              VMALLOC_START,VMALLOC_END,MAXMEM);
+       BUG_ON(VMALLOC_START > VMALLOC_END);
+       
        /* this will put all low memory onto the freelists */
        totalram_pages += __free_all_bootmem();
        /* XEN: init and count low-mem pages outside initial allocation. */
index 345b8264b80c936fc7a747a97641e5215f85d884..af8ccd4652d828ffdc92f40d9460e2dccf21c4b7 100644 (file)
@@ -176,7 +176,7 @@ extern int sysctl_legacy_va_layout;
 
 #define PAGE_OFFSET            ((unsigned long)__PAGE_OFFSET)
 #define VMALLOC_RESERVE                ((unsigned long)__VMALLOC_RESERVE)
-#define MAXMEM                 (-__PAGE_OFFSET-__VMALLOC_RESERVE)
+#define MAXMEM                 (HYPERVISOR_VIRT_START-__PAGE_OFFSET-__VMALLOC_RESERVE)
 #define __pa(x)                        ((unsigned long)(x)-PAGE_OFFSET)
 #define __va(x)                        ((void *)((unsigned long)(x)+PAGE_OFFSET))
 #define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)